  La meilleure des technologies pour l'implémentation doit être utilisable, et
et doit pouvoir disposer de prérequis utiles à la gestion des besoins et
objectifs du métamodèle et des scénarios.\\
  Comme besoins on peut citer:

\begin{itemize}
  \item \emphbf{Construction de services} : On doit pouvoir déclarer des
  services et les exposer.
  \item \emphbf{La composition} : On doit pouvoir construire des services
  composites.
  \item \emphbf{L' interconnection} : On doit pouvoir de manière explicite
  définir les interactions entre les différents services qui composent le
  système.
  \item \emphbf{L'orchestration} : Nécessaire pour la mise en oeuvre de la
  collaboration entre services (voir \ref{subsec:strategie_orchestration}).
  \item \emphbf{L' instropection} : Le système décrit doit pouvoir être
  monitorer pour pouvoir gérer l' adaptation.
  \item \emphbf{L' intercession} : On doit pouvoir modifier l' état du \\
  système pendant son exécution, ce qui permettra d'apdater lorsque \\
  ce sera nécessaire.\\
\end{itemize}

\subsubsection{Découverte des technologies existantes}
%%Présentation des technos: SCA Tools, Glassfish, Bonita, Dévpt par Web-Service
  Les investigations sur les techniques et technologies présentes sur le marchés
ont mis en évidence plusieurs possibilités chacunes ayant des particularités qui
leurs sont propres.\\


\paragraph*{\nlink{http://www.eclipse.org/stp/sca/}{SCA Tools}}:


  Il s'agit un ensemble d'outils mettant en oeuvre le
standard \emph{\textbf{S}ervice \textbf{C}omponent \textbf{A}rchitecture}
proposé par l' \nlink{http://www.osoa.org/display/Main/Home}{Open SOA
consortium}.\\

  \SCA{} permet de décrire les composants d'un système ainsi les services qu'ils
fournissent et ceux dont ils ont besoin. Il permet aussi de décrire clairement
l' interconnection de tous les composants du système ainsi que les moyens qu'ils
utilisent pour communiquer entre eux.\\

  \SCA{} fournit donc la structuration d'un système, et permet d'interconnecté
des composants pouvant être implémentés dans des technologies différentes mais
communiquant par des protocoles standardisés.\\

Deux cas peuvent ont été envisagé pour l' utilisation de cette technologie:
\begin{itemize}
  \item \emphbf{SCA/BPEL}: On a la possibilité d'implémenter un composant à
  l'aide d'un fichier \BPEL{} et de le faire communiquer avec les autres
  composant par l'intermédiaire d'interface \WSDL{}; ce qui peut être une
  solution interessante car on aurait à la fois structuration claire (\SCA{})
  et orchestration(\BPEL).
  \item \emphbf{SCA/Java}: Dans cette optique les composants et leurs interfaces
  sont décris à l'aide du language Java. L' orchestration doit ainsi se faire
  manuellement.\\
\end{itemize}

\paragraph*{\nlink{http://wiki.open-esb.java.net/}{Open ESB}}:


  L' utilisation d'un ESB (\textbf{E}nterprise \textbf{S}ervice \textbf{B}us)
tel que \emph{Open ESB} permet de faciliter la mise en oeuvre
d'une architecture SOA. En effet un ESB met a disposition des developpeurs des
services de bases tel que:
\begin{itemize}
  \item La gestion d'évènements
  \item L' exposition des services
  \item Une communication fiable entre les services\\
\end{itemize}

  \emph{Open ESB} est livré avec le serveur d' application \emphbf{Glassfish}
ainsi que l' environnement de developpement \emphbf{Netbeans IDE}. Ces deux
outils sont étroitement liés et offrent un environnement de travail propice au
développement SOA.\\

  L' utilisation de cette technologie s' orienterait vers une \\
optique \emphbf{BPEL/WebServices}:
\begin{itemize}
  \item \emph{Netbeans IDE} permettrait de définir de façon aisé des fichiers
  BPEL ainsi que gérer leur déploiement sur le serveur d'application.
  \item Les \emph{WebServices} pourrait être exposés comme des entités, ce qui
  déléguerait au serveur d' application \emph{Glassfish} la gestion de leur
  cycle de vie ou encore la persistance.\\
\end{itemize}

\paragraph*{\nlink{http://www.bonitasoft.com/}{Bonita}}:
\large
\begin{center}
\textbf{\textcolor{Red}{Le GREC SI TU VEUX DIRE KELKE CHOSE}}
\end{center}
\normalsize

\paragraph*{\nlink{http://void}{WebServices}}:

  L' idée içi serait d'utiliser le formalisme \BPEL{} pour l' orchestration et
pour la construction de services composites.
  Les services seraient déclarés en tant que \emph{WebServices} et exposées
sur  le réseau local comme le montre l'exemple
\ref{cod:sample_local_webservices}.\\
  L' utilisation de cette méthode nécessitent d' avoir à gérer un moteur d'
exécution de \BPEL{} tel que \nlink{http://ode.apache.org/}{Apache ODE};
qui pourra prendre en charge la gestion du cycle de vie des \BPEL{} qui y seraient déployés.

\begin{code}
\begin{lstlisting}
package fr.alma.domo;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService(targetNamespace="http://helloworld/ws",
    name="HelloWorldTest",
    serviceName="helloWorld")
public class HelloWorld {

  @WebMethod(operationName="sayHello")
  public String sayHello(@WebParam(name="name",mode=WebParam.Mode.IN) String name){
    return "Hello "+name;
  }

  @WebMethod(exclude=true)
  public static void main(String[] args){
    //Le WSDL Sera dispo a l'addresse http://localhost:12356/helloWorld?wsdl
    String endpoint = "http://localhost:12356/";
    Endpoint.publish(endpoint, new HelloWorld());
  }

}
\end{lstlisting}
\label{cod:sample_local_webservices}
\caption{WebService et Java}
\end{code}

\subsubsection{Différence entre ces technologies}
%%Présenter les critères et le choix final par rapport à ceux-ci

